package com.bjc.service.impl;

import com.bjc.po.Article;
import lombok.extern.java.Log;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @program: boot-lettuce
 * @description: 物流队列
 * @author: bjc
 * @create: 2020-07-17 21:28
 */
@Service
@Log
public class ListQueueServiceServiceImpl {

    @Resource(name = "redisTemplate")
    private ListOperations<String, String> opsForList;

    /**
     * 当用户完成付款后
     * 淘宝会生成一个物流队列 购买的商品 所在地--》收货地址
     * 生成物流队列 （北京海淀某小区、收货地址：南京建邺千锋教育JAVA 二楼1904班级）
     * 1.商家发货（北京海淀某小区）
     * 2.快递小哥取货
     * 3.北京首都机场--》南京禄口机场
     * 4.南京禄口机场--》浦口
     * 5.浦口区--》北外滩水城
     * 6.收货
     * 商品评价
     */

    /**
     *1.生成订单  物流队列
     */
    public void orderQueue(String orderId){
        String key = "queue:"+orderId;
        opsForList.leftPush(key,"1.商家发货（北京海淀某小区）");
        opsForList.leftPush(key,"2.快递小哥取货");
        opsForList.leftPush(key,"3.北京首都机场--》南京禄口机场");
        opsForList.leftPush(key,"4.南京禄口机场--》浦口");
        opsForList.leftPush(key,"5.浦口区--》北外滩水城）");
        opsForList.leftPush(key,"6.收货");
    }

    /**
     * 2 快递小哥触发队列时间
     * 消费一个任务
     */
    public String orderTouch(String orderId){
        String keySuccess= "queue:"+orderId+"success";//执行成功的队列的key
        String key = "queue:"+orderId; //待执行的队列key

        return opsForList.rightPopAndLeftPush(key,keySuccess);
    }

    /**
     * 3  快递公司
     * 关注： 你的这个快递还有几项任务完成
     */
    public List<String> orderSelect(String orderId){
        String key = "queue:"+orderId; //待执行的队列key
        return opsForList.range(key,0,-1);
    }

    /**
     * 4 用户
     * 关注：我的快递到哪里？
     */
    public List<String> orderSelectSuccess(String orderId){
        String key = "queue:"+orderId+"success";
        return opsForList.range(key,0,-1);
    }
}
